package com.zmn.mcc.dubbo.interfaces.staff.dingtalk;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.mcc.common.dto.dingtalk.RobotSendGroupMessage;
import com.zmn.mcc.common.dto.dingtalk.SendImageMessage;
import com.zmn.mcc.common.dto.dingtalk.SendImageMessageResult;
import io.swagger.annotations.ApiParam;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 员工发送钉钉通知消息
 *
 * @author tanghongjun
 * @since 2021年3月9日17:50:00
 */
public interface DingTalkRemoteService {

    /**
     * 根据员工的钉钉ID获取钉钉信息
     *
     * @param mobile  员工股手机号
     * @param content 发送内容
     * @return true 发送成功 false 发送失败
     * ResponseDTO.fail(ApiException.getMessage()); 发送调用异常
     * @since 2021年3月9日17:50:00
     */
    ResponseDTO<Boolean> sendDingTalkWorkRecord(String mobile, String content);


    /**
     * 通过机器人向指定群发送消息
     *
     * @param message 钉钉机器人发送群消息对象
     * @return true 发送成功 false 发送失败
     * @author xujie
     * @since 2021/03/22
     */
    ResponseDTO<Boolean> sendMessageToGroupByRobot(@ApiParam(value = "钉钉机器人发送群消息对象", required = true)
                                                   @NotNull(message = "钉钉机器人发送群消息对象不能为空") RobotSendGroupMessage message);


    /**
     * 发送图片消息
     *
     * @param imgMsgList 发送图片消息对象
     * @return 发送图片消息结果
     * @author xujie
     * @since 2021/04/28
     */
    ResponseDTO<List<SendImageMessageResult>> sendImageMessage(@ApiParam(value = "发送图片消息对象", required = true)
                                                               @NotNull(message = "发送图片消息不能为空") List<SendImageMessage> imgMsgList);

    /**
     * 获取钉钉AccessToken
     *
     * @return AccessToken
     * @author xujie
     * @since 2021/04/29
     */
    ResponseDTO<String> getDingTalkAccessToken();
}
